// hello_bpf.c
#include <linux/bpf.h>
#include <bpf/bpf_helpers.h> // for bpf_printk

char LICENSE[] SEC("license") = "Dual BSD/GPL";

// 定义一个 MAP，虽然这个 hello world 用不到，但很多 eBPF 程序都会用
struct {
    __uint(type, BPF_MAP_TYPE_ARRAY);
    __uint(max_entries, 1);
    __type(key, __u32);
    __type(value, __u64);
} my_map SEC(".maps");

// BPF程序入口点，通常 attach 到一个 tracepoint
// 这里我们选择 sys_enter_execve 系统调用入口
SEC("tp/syscalls/sys_enter_execve")
int bpf_prog(void *ctx) {
    bpf_printk("Hello from eBPF! PID: %d\n", bpf_get_current_pid_tgid() >> 32);
    return 0;
}